#!/usr/bin/env node

/**
 * 测试webhook URL验证
 * 用于验证URL验证接口是否正常工作
 */

const axios = require('axios');

const WEBHOOK_URL = process.env.WEBHOOK_URL || 'http://localhost:3000/webhook/feishu';
const TEST_CHALLENGE = 'test_challenge_' + Date.now();

console.log('🧪 测试Webhook URL验证...');
console.log('📍 URL:', WEBHOOK_URL);
console.log('🔑 Challenge:', TEST_CHALLENGE);
console.log('');

// 测试URL验证请求
async function testUrlVerification() {
  try {
    const response = await axios.post(WEBHOOK_URL, {
      type: 'url_verification',
      challenge: TEST_CHALLENGE
    }, {
      headers: {
        'Content-Type': 'application/json'
      },
      timeout: 5000
    });

    console.log('✅ 请求成功');
    console.log('📊 响应状态:', response.status);
    console.log('📋 响应数据:', JSON.stringify(response.data, null, 2));

    // 检查响应格式
    if (response.data && response.data.challenge === TEST_CHALLENGE) {
      console.log('');
      console.log('✅ URL验证格式正确！');
      console.log('✅ 响应包含正确的challenge字段');
      return true;
    } else {
      console.log('');
      console.log('❌ URL验证格式错误！');
      console.log('⚠️  飞书要求响应格式: {"challenge": "xxx"}');
      console.log('📋 实际响应:', JSON.stringify(response.data, null, 2));
      return false;
    }
  } catch (error) {
    console.log('');
    console.log('❌ 请求失败');
    if (error.response) {
      console.log('📊 响应状态:', error.response.status);
      console.log('📋 响应数据:', JSON.stringify(error.response.data, null, 2));
    } else if (error.request) {
      console.log('⚠️  无法连接到服务器');
      console.log('💡 请确保：');
      console.log('   1. 服务器正在运行');
      console.log('   2. URL地址正确');
      console.log('   3. 端口号匹配（tunnel端口 vs 服务器端口）');
    } else {
      console.log('❌ 错误:', error.message);
    }
    return false;
  }
}

// 运行测试
testUrlVerification().then(success => {
  if (success) {
    console.log('');
    console.log('🎉 测试通过！可以在飞书后台配置此URL');
    process.exit(0);
  } else {
    console.log('');
    console.log('⚠️  测试失败，请检查配置');
    process.exit(1);
  }
});

